// 使用 Vue Router 时导入了一个名为 RouteRecordRaw 的类型。
// RouteRecordRaw 是一个接口，用于描述路由记录的基本信息、约束路由配置的格式
// 使用 RouteRecordRaw 类型，在定义路由时可以更清晰地指定每个路由的属性，包括路由路径、组件、元数据等。
// 这个类型的导入可以帮助开发者在编写路由时更加方便地使用类型检查和自动补全功能。
import type { RouteRecordRaw } from 'vue-router'

/**
 * 静态路由（默认路由）
 */
export const staticRoutes: RouteRecordRaw[] = [
  {
    path: '/login',
    name: 'Login',
    component: () => import('@/views/login/index.vue'),
    meta: {
      // hidden 作用：是不让当前路由在菜单位置进行展示
      hidden: true
    }
  },

  {
    path: '/404',
    name: '404',
    component: () => import('@/views/error/404.vue'),
    meta: {
      // 在左侧菜单不显示该路由
      hidden: true
    }
  },

  {
    path: '/', // 根路由
    component: () => import('@/layout/index.vue'), // 路由懒加载
    redirect: '/home', // 重定向到 /home 路由(在 children 子组件中)
    children: [
      {
        path: '/home',
        name: 'Home',
        component: () => import('@/views/home/index.vue'),
        // 路由元信息，自定义属性
        meta: {
          title: '首页',
          icon: 'ele-HomeFilled'
        }
      }
    ]
  }

  // {
  //   path: '/test',
  //   name: 'test',
  //   component: () => import('@/views/Test/index.vue'),
  //   meta: {
  //     // 在左侧菜单不显示该路由
  //     hidden: true
  //     // name: '测试'
  //   }
  // },
]

/**
 * 定义动态路由
 */
export const allAsyncRoutes: Array<RouteRecordRaw> = [
  {
    path: '/product',
    name: 'Product',
    component: () => import('@/layout/index.vue'),
    // 如果二级路由只有一个时，是否显示一级路由，
    // 如果设置为 true，既显示一级菜单，又显示二级菜单
    // 如果设置为 false，则将二级菜单提升，将二级菜单提升显示到一级菜单位置
    // alwaysShow: true,
    meta: {
      title: '商品管理',
      icon: 'ele-Goods'
    },
    children: [
      {
        path: 'trademark',
        name: 'Trademark',
        component: () => import('@/views/Product/Trademark/index.vue'),
        meta: {
          title: '品牌管理'
        }
      },
      {
        path: 'attr',
        name: 'Attr',
        component: () => import('@/views/Product/Attr/index.vue'),
        meta: {
          title: '平台属性管理'
        }
      },
      {
        path: 'spu',
        name: 'Spu',
        component: () => import('@/views/Product/Spu/index.vue'),
        meta: {
          title: 'Spu管理'
        }
      },
      {
        path: 'sku',
        name: 'Sku',
        component: () => import('@/views/Product/Sku/index.vue'),
        meta: {
          title: 'Sku管理'
        }
      }
    ]
  },
  {
    path: '/acl',
    name: 'Acl',
    component: () => import('@/layout/index.vue'),
    meta: {
      title: '权限管理',
      icon: 'ele-Setting'
    },
    children: [
      {
        path: 'user/list',
        name: 'User',
        component: () => import('@/views/acl/user/index.vue'),
        meta: {
          title: '用户管理'
        }
      },
      {
        path: 'role/list',
        name: 'Role',
        component: () => import('@/views/acl/role/index.vue'),
        meta: {
          title: '角色管理'
        }
      },
      {
        path: 'role/auth',
        name: 'RoleAuth',
        component: () => import('@/views/acl/role/roleAuth.vue'),
        meta: {
          title: '角色设置',
          hidden: true
        }
      },
      {
        path: 'permission/list',
        name: 'Permission',
        component: () => import('@/views/acl/permission/index.vue'),
        meta: {
          title: '菜单管理'
        }
      }
    ]
  }
]

export const otherRoutes: Array<RouteRecordRaw> = [
  /* 匹配任意的路由 必须最后注册 */
  {
    path: '/:id(.*)*',
    name: 'Any',
    // redirect: '/404',
    component: () => import('@/views/error/404.vue'),
    meta: {
      hidden: true
    }
  }
]
